#pragma once

#include <string>
#include <vector>
#include "timer.h"
using std::vector;

class Conv{
public:
    Conv(vector<float>& weight, int ic, int oc, int ks, int stride, int padding);
    void forward_direct(vector<float>& input, vector<int> input_shape, vector<float>& output);
    void forward_direct1(vector<float>& input, vector<int> input_shape, vector<float>& output);
    void forward_im2col_gemm(vector<float>& input, vector<int> input_shape, vector<float>& output);
public:
    vector<float> weight;
    int ic;
    int oc;
    int ks;
    int stride;
    int padding;
public:
    // forward_direct
    Timer timer_pad;
    Timer timer_conv;
    // forward_im2col_gemm
    Timer timer_im2col;
    Timer timer_gemm;
};
